import { loginApi, getProfileApi } from '@/api/user'
import store from '../index'
// 从原有的store数据中获取用户信息
const user = store.getState().user
// 登录
// 同步
export const login = (user) => ({
  type: 'LOGIN',
  payload: user,
})
// 异步
export const loginAsync = (postData) => {
  return async (dispatch) => {
    // 返回Promise,让使用这个action的地方能够捕获异常
    return new Promise(async (resolve, reject) => {
      try {
        const { data } = await loginApi(postData)
        user.token = data.token
        dispatch(login(user))
        // 返回成功promise
        resolve()
      } catch (err) {
        // 失败
        reject(err)
      }
    })
  }
}

// 获取用户信息
export const getProfile = (user) => ({
  type: 'GET_PROFILE',
  payload: user,
})
export const getProfileSync = () => {
  return (dispatch) => {
    // 返回Promise,让使用这个action的地方能够捕获异常
    return new Promise(async (resolve, reject) => {
      try {
        // 调接口获取用户信息
        const { data } = await getProfileApi()
        user.userinfo = data
        dispatch(getProfile(user))
        // 返回成功promise
        resolve(user)
      } catch (err) {
        // 失败
        reject(err)
      }
    })
  }
}

// 退出登录
export const logout = () => ({
  type: 'LOGOUT',
  payload: { token: '', userinfo: {} },
})
